<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<script language="JavaScript" charset="utf-8" type="text/javascript" src="test/app/jsUnitCore.js"></script>
		<script language="JavaScript" charset="utf-8" type="text/javascript" src="assets/libs/kmkz_project.js"></script>
		<script language="JavaScript" type="text/javascript">
		<!--
			/**
			 * エスケープ文字で変換されない(正常)
			 */
			function testFormatStringEscape() {
				
				var str = StringUtils.format("hello, i am %%s.", "mahny");
				assertEquals(str, "hello, i am %s.");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 */
			function testFormatString() {
				
				var str = StringUtils.format("hello, i am %s.", "mahny");
				assertEquals(str, "hello, i am mahny.");
			}
			
			/**
			 * 複数の文字列書式指定による出力(正常)
			 */
			function testFormatStringAmong() {
				
				var str = StringUtils.format("%s, i am %s.", "hello", "mahny");
				assertEquals(str, "hello, i am mahny.");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が大きい
			 */
			function testFormatStringRange1() {
				
				var str = StringUtils.format("hello, i am %4s.", "mahny");
				assertEquals(str, "hello, i am mahny.");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が大きい＋ゼロ埋め
			 */
			function testFormatStringRange1Zero() {
				
				var str = StringUtils.format("hello, i am %04s.", "mahny");
				assertEquals(str, "hello, i am mahny.");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が大きい＋左寄せ
			 */
			function testFormatStringRange1Left() {
				
				var str = StringUtils.format("hello, i am %-4s.", "mahny");
				assertEquals(str, "hello, i am mahny.");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数と引数の桁数が同じ
			 */
			function testFormatStringRange2() {
				
				var str = StringUtils.format("hello, i am %5s.", "mahny");
				assertEquals(str, "hello, i am mahny.");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数と引数の桁数が同じ＋ゼロ埋め
			 */
			function testFormatStringRange2Zero() {
				
				var str = StringUtils.format("hello, i am %05s.", "mahny");
				assertEquals(str, "hello, i am mahny.");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数と引数の桁数が同じ＋左寄せ
			 */
			function testFormatStringRange2Zero() {
				
				var str = StringUtils.format("hello, i am %-5s.", "mahny");
				assertEquals(str, "hello, i am mahny.");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が小さい
			 */
			function testFormatString3() {
				
				var str = StringUtils.format("hello, i am %6s.", "mahny");
				assertEquals(str, "hello, i am  mahny.");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が小さい＋ゼロ埋め
			 */
			function testFormatString3Zero() {
				
				var str = StringUtils.format("hello, i am %06s.", "mahny");
				assertEquals(str, "hello, i am 0mahny.");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が小さい＋左寄せ
			 */
			function testFormatString3Left() {
				
				var str = StringUtils.format("hello, i am %-6s.", "mahny");
				assertEquals(str, "hello, i am mahny .");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 */
			function testFormatDigit() {
				
				var str = StringUtils.format("850 + 150 = %d", 1000);
				assertEquals(str, "850 + 150 = 1000");
			}
			
			/**
			 * 複数の文字列書式指定による出力(正常)
			 */
			function testFormatDigitAmong() {
				
				var str = StringUtils.format("%d + %d = 1000", 850, 150);
				assertEquals(str, "850 + 150 = 1000");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が大きい
			 */
			function testFormatDigitRange1() {
				
				var str = StringUtils.format("850 + 150 = %3d", 1000);
				assertEquals(str, "850 + 150 = 1000");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が大きい＋ゼロ埋め
			 */
			function testFormatDigitRange1Zero() {
				
				var str = StringUtils.format("850 + 150 = %03d", 1000);
				assertEquals(str, "850 + 150 = 1000");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が大きい＋左寄せ
			 */
			function testFormatDigitRange1Left() {
				
				var str = StringUtils.format("850 + 150 = %-3d", 1000);
				assertEquals(str, "850 + 150 = 1000");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数と引数の桁数が同じ
			 */
			function testFormatDigitRange2() {
				
				var str = StringUtils.format("850 + 150 = %4d", 1000);
				assertEquals(str, "850 + 150 = 1000");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数と引数の桁数が同じ＋ゼロ埋め
			 */
			function testFormatDigitRange2Zero() {
				
				var str = StringUtils.format("850 + 150 = %04d", 1000);
				assertEquals(str, "850 + 150 = 1000");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数と引数の桁数が同じ＋左寄せ
			 */
			function testFormatDigitRange2Zero() {
				
				var str = StringUtils.format("850 + 150 = %-4d", 1000);
				assertEquals(str, "850 + 150 = 1000");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が小さい
			 */
			function testFormatDigit3() {
				
				var str = StringUtils.format("850 + 150 = %5d", 1000);
				assertEquals(str, "850 + 150 =  1000");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が小さい＋ゼロ埋め
			 */
			function testFormatDigit3Zero() {
				
				var str = StringUtils.format("850 + 150 = %05d", 1000);
				assertEquals(str, "850 + 150 = 01000");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が小さい＋左寄せ
			 */
			function testFormatDigit3Left() {
				
				var str = StringUtils.format("850 + 150 = %-5d", 1000);
				assertEquals(str, "850 + 150 = 1000 ");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 */
			function testFormatHex() {
				
				var str = StringUtils.format("DIGIT:255 = HEX:%x", 255);
				assertEquals(str, "DIGIT:255 = HEX:ff");
			}
			
			/**
			 * 複数の文字列書式指定による出力(正常)
			 */
			function testFormatHexAmong() {
				
				var str = StringUtils.format("DIGIT:15 = HEX:%x, DIGIT:255 = HEX:%x", 15, 255);
				assertEquals(str, "DIGIT:15 = HEX:f, DIGIT:255 = HEX:ff");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が大きい
			 */
			function testFormatHexRange1() {
				
				var str = StringUtils.format("DIGIT:65535 = HEX:%3x", 65535);
				assertEquals(str, "DIGIT:65535 = HEX:ffff");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が大きい＋ゼロ埋め
			 */
			function testFormatHexRange1Zero() {
				
				var str = StringUtils.format("DIGIT:65535 = HEX:%03x", 65535);
				assertEquals(str, "DIGIT:65535 = HEX:ffff");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が大きい＋左寄せ
			 */
			function testFormatHexRange1Left() {
				
				var str = StringUtils.format("DIGIT:65535 = HEX:%-3x", 65535);
				assertEquals(str, "DIGIT:65535 = HEX:ffff");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数と引数の桁数が同じ
			 */
			function testFormatHexRange2() {
				
				var str = StringUtils.format("DIGIT:65535 = HEX:%4x", 65535);
				assertEquals(str, "DIGIT:65535 = HEX:ffff");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数と引数の桁数が同じ＋ゼロ埋め
			 */
			function testFormatHexRange2Zero() {
				
				var str = StringUtils.format("DIGIT:65535 = HEX:%04x", 65535);
				assertEquals(str, "DIGIT:65535 = HEX:ffff");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数と引数の桁数が同じ＋左寄せ
			 */
			function testFormatHexRange2Zero() {
				
				var str = StringUtils.format("DIGIT:65535 = HEX:%-4x", 65535);
				assertEquals(str, "DIGIT:65535 = HEX:ffff");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が小さい
			 */
			function testFormatHex3() {
				
				var str = StringUtils.format("DIGIT:65535 = HEX:%5x", 65535);
				assertEquals(str, "DIGIT:65535 = HEX: ffff");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が小さい＋ゼロ埋め
			 */
			function testFormatHex3Zero() {
				
				var str = StringUtils.format("DIGIT:65535 = HEX:%05x", 65535);
				assertEquals(str, "DIGIT:65535 = HEX:0ffff");
			}
			
			/**
			 * 文字列書式指定による出力(正常)
			 * 桁数より引数の桁数が小さい＋左寄せ
			 */
			function testFormatHex3Left() {
				
				var str = StringUtils.format("DIGIT:65535 = HEX:%-5x", 65535);
				assertEquals(str, "DIGIT:65535 = HEX:ffff ");
			}
			
			
			/**
			 * デモ用メソッド
			 */
			function demo() {
				
				var formatString = document.getElementById("formatStr").value;
				var valueString = document.getElementById("valueStr").value;
				
				var command = "StringUtils.format('" + formatString + "', " + valueString + ")"
				document.getElementById("resultStr").value = eval(command);
			}
		//-->
		</script>
        <title>Kamikaze Project JS</title>
    </head>
    <body>
        <h1>Kamikaze Project JS / Test Code</h1>
		<hr>
		<p>This HTML is for the test code. Please specify this file on JsUnit.</p>
		<p>このHTMLにはJsUnitでテストコードも含まれています。テストコードを実行する場合はJsUnitを別途構築してください。</p>
		<hr>
		<h2>動作サンプル</h2>
		<dl>
			<dt>第1引数</dt>
			<dd>書式付文字列。書式 : /%-{0,1}0{0,1}[0-9]*[sdx]/。文字"%"を出したい場合は"%%"とエスケープしてください。</dd>
			<dt>第2引数以降</dt>
			<dd>置換する値。文字列、整数(負数は未対応)が指定できます。複数指定する場合はカンマで区切ってください。</dd>
		</dl>
		<p>
			StringUtils.format("
			<input id="formatStr" type="text" size="50" value="こんにちは、%s。今日で徹夜%d日目ですね。">",
			<input id="valueStr" type="text" size="30" value="'mahny', 3">);<br>
			
			<input type="button" value="実行" onclick="demo()"><br>
			
			結果<input id="resultStr" type="text" size="100">
		</p>
		
    </body>
</html>
